package com.famdoc.Controller;

import com.famdoc.Pojo.dto.Result;
import com.famdoc.Pojo.dto.VisitFrom;
import com.famdoc.Pojo.entity.Visit;
import com.famdoc.Service.VisitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 随访模块
 */
@RestController
@RequestMapping("/visit")
public class VisitController {

    @Autowired
    private VisitService visitService;

    /**
     * 新增随访
     *
     * @param visitFrom
     * @return
     */
    @PostMapping("/addVisit")
    public Result addVisit(@RequestBody VisitFrom visitFrom) {
        return visitService.addVisit(visitFrom);
    }

    /**
     * 通过患者姓名/身份证/电话，搜索随访列表
     *
     * @param keyword
     * @return
     */
    @GetMapping("/searchVisitByKeyword")
    public Result searchVisitByKeyword(String keyword, Integer doctorId) {
        return visitService.searchVisitByKeyword(keyword, doctorId);
    }

    /**
     * 获取随访列表（没有任何筛选）
     *
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("/getVisitList")
    public Result getVisitList(Integer doctorId, Integer page, Integer pageSize) {
        return visitService.getVisitList(doctorId, page, pageSize);
    }

    /**
     * 获取随访列表（通过日期筛选，0代表全部，3代表最近三个月，6代表最近半年，12代表最近一年）
     *
     * @param type
     * @return
     */
    @GetMapping("/flierVisitByDate")
    public Result flierVisitByDate(Integer doctorId, Integer type) {
        return visitService.flierVisitByDate(doctorId, type);
    }

    /**
     * 修改随访
     *
     * @param visitFrom
     * @return
     */
    @PutMapping("/updateVisit")
    public Result updateVisit(@RequestBody VisitFrom visitFrom) {
        return visitService.updateVisit(visitFrom);
    }

    /**
     * 删除随访（根据id删除）
     *
     * @param id
     * @param checkId
     * @param checkItemId
     * @return
     */
    @DeleteMapping("/deleteVisit")
    public Result deleteVisit(Integer id, Integer checkId, Integer checkItemId) {
        return visitService.deleteVisit(id, checkId, checkItemId);
    }

    /**
     * 获取签约患者列表
     *
     * @param doctorId
     * @param keyword
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("/getSignPatient")
    public Result getSignPatient(Integer doctorId, String keyword, Integer page, Integer pageSize) {
        return visitService.getSignPatient(doctorId, keyword, page, pageSize);
    }

    /**
     * 获取随访记录对应的体检记录
     *
     * @param checkId
     * @return
     */
    @GetMapping("/getVisitCheckItem")
    public Result getVisitCheckItem(Integer checkId) {
        return visitService.getVisitCheckItem(checkId);
    }

    /**
     * 获取病人对应的体检记录列表
     * @param patientId
     * @return
     */
    @GetMapping("/getCheckItemList")
    public Result getCheckItemList(Integer patientId){
        return visitService.getCheckItemList(patientId);
    }

}
